Using Compile-Time Reflection for Objects’ State Capture1
نویسندگان
چکیده
Checkpointing is a major issue in the design and the implementation of dependable systems, especially for building fault tolerance strategies. Checkpointing a distributed application involves complex algorithms to ensure the consistency of the distributed recovery state of the application. All these algorithms make the assumption that the internal state of the application objects can be obtained easily. However, this is a strong assumption and, in practice, it is not so easy when complex active objects are considered. This is the problem we focus on in our current work. The available solutions to this problem either rely on : § a specific hardware/operating-system/middleware that can provide runtime information about the mapping used between memory and application objects; § a reflective runtime which provides access to class information, such as Java Serialization [1] based on the Java Reflection API; § intervention at the language level, rewriting the original code to add checkpointing mechanisms (e.g. Porch [2] for C programs); § the provision of state handling mechanisms by the user; since the implementation of these mechanisms must be error-free, this is a weak solution. When neither the underlying system nor the language runtime is sufficiently reflective to provide type information about the object classes, the only solution is to obtain this information at the language level. Two approaches can be investigated here: (i) developing a specific compiler (as Porch does) or (ii) using a reflective compiler such as OpenC++ [3] or OpenJava [4]. Since diving into a compiler is very complex and can lead to the introduction of new software faults, we think that the latter is a better solution. Clearly, compile-time reflection opens up the compilation process without impacting the compiler itself. Off-the-shelf compilers can thus be used to produce the runtime entities.
منابع مشابه
Marc - Olivier
The goal of this dissertation is to design and implement a metaobject protocol adapted to fault-tolerance in Corba applications. No currently available metaobject protocol is satisfactory in this context. We define a protocol that enables dynamic control of (a) the behaviour and internal state of Corba objects, and (b) client/server and object/metaobject links. The implementation we propose is ...
متن کاملTolérance aux fautes sur CORBA par protocole à métaobjets et langages réflexifs
The goal of this dissertation is to design and implement a metaobject protocol adapted to fault-tolerance in Corba applications. No currently available metaobject protocol is satisfactory in this context. We define a protocol that enables dynamic control of (a) the behaviour and internal state of Corba objects, and (b) client/server and object/metaobject links. The implementation we propose is ...
متن کاملDevelopment of a Metaobject Protocol for Fault-Tolerance using Compile-Time Reflection
The use of metalevel architectures for the implementation of fault-tolerant systems is today very appealing. Nevertheless, all such fault-tolerant systems have used a general-purpose metaobject protocol (MOP) or are based on restricted reflective features of some object-oriented language. According to our past experience, we define in this paper a suitable metaobject protocol, called FT-MOP for...
متن کاملCompile Time and Runtime Reflection for Dynamic Evaluation of Messages : Application to Interactions between Remote Objects
This paper shows how compile time and runtime reflection and object-oriented programming can be used to make the implementation of the problems posed by the dynamic evaluation of messages easier. It describes these problems through interactions, i.e. inter object communications, in a distributed architecture defined in C++ and CORBA. The proposed solutions are based on design patterns with the ...
متن کاملUnification of Compile-time and Run-time Metaobject Protocols
In this paper, we propose the unification of compile-time and run-time Metaobject Protocols (MOPs), to improve the efficiency and flexibility of object-oriented operating systems. We also propose a reflective programming system, named Cognac, which employs unified MOPs and provides language and runtime facilities for the Apertos object-oriented distributed operating system. In Cognac, each obje...
متن کامل